package com.xbongbong.saas.service;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.field.FieldAttrEntity;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.product.pojo.dto.ProductStockInfoSaveDTO;
import com.xbongbong.pro.productbaseinfo.pojo.dto.ProductBaseInfoDeleteBatchDTO;
import com.xbongbong.pro.productbaseinfo.pojo.dto.ProductBaseInfoListDTO;
import com.xbongbong.pro.productbaseinfo.pojo.vo.ProductBaseInfoDeleteBatchVO;
import com.xbongbong.pro.productbaseinfo.pojo.vo.ProductBaseInfoListVO;
import com.xbongbong.saas.domain.entity.ProductBaseInfoEntity;

import java.util.List;

/**
 * 产品库存信息接口
 *
 * @author chaoxiong.lei
 * @date 19:07 2019/1/20
 * @since v1.0
 **/
public interface ProductBaseInfoService {
    /**
     * 保存产品库存信息方法
     *
     * @param productStockInfoSaveDTO 产品库存信息DTO
     * @author chaoxiong.lei
     * @Date 20:55 2019/2/26
     * @since v1.0
     **/
    void saveProductBaseInfo(ProductStockInfoSaveDTO productStockInfoSaveDTO) throws XbbException;

    /**
     * 库存产品自定义字段保存前的校验
     *
     * @param explainList 库存产品自定义字段集合
     * @param redundantData 前端传入的自定义字段的值
     * @author chaoxiong.lei
     * @Date 20:55 2019/2/26
     * @since v1.0
     **/
    JSONObject checkRedundantField4Save(List<FieldAttrEntity> explainList, String redundantData) throws XbbException;

    /**
     * 获取产品冗余信息
     * @param productBaseInfoListDTO
     * @return
     * @throws XbbException
     */
    ProductBaseInfoListVO findProductBaseInfoList(ProductBaseInfoListDTO productBaseInfoListDTO) throws XbbException;

    /**
     * 根据关联对象id批量删除产品冗余信息
     * @param productBaseInfoDeleteBatchDTO
     * @return
     * @throws XbbException 业务异常
     */
    ProductBaseInfoDeleteBatchVO deleteBatchByRefId(ProductBaseInfoDeleteBatchDTO productBaseInfoDeleteBatchDTO) throws XbbException;

    void updateWithoutId(List<ProductBaseInfoEntity> updateProductBaseInfoList, int code, String corpid);
}
